package file;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件工具获得系统文件信息.<BR>
 *
 *
 * VERSION        NAME        DATE        REASON
 * ----------------------------------------------------------------------------
 * 1.00           Brian       Feb 12, 2012  Create
 * @author brian
 * @version 1.00
 */
public class FileUtil {

    /**
     * 取得文件夹下面的所以文件。<BR>
     * 
     * @param dir
     * @return List String
     * @throws FileNotFoundException 
     * @throws IOException
     */
    public static List<String> getFilesByDir(String dir) throws FileNotFoundException {

        File pathFile = new File(dir);
        if (!pathFile.exists()){
            throw new FileNotFoundException(dir);
        }
        List<String> result = new ArrayList<String>();
        getFilesPath(dir, result);
        return result;
    }

    /**
     * 根据名字得到资源URL.<BR>
     *
     * @param name
     * @return URL
     */
    public static URL getUrlPath(String name) {

        if (name.substring(0, 1).equals("/")) {
            return FileUtil.class.getClass().getResource(name);
        } else {
            return FileUtil.class.getClass().getResource("/" + name);
        }
    }

    /**
     * 通过dirStr得到所以dirStr下面的所以文件路径。存储在result中.<BR>
     *
     * @param dirStr 文件夹
     * @param result 所以文件路径
     */
    private static void getFilesPath(String dirStr, List<String> result) {

        File dir = new File(dirStr);
        File[] listFile = dir.listFiles();
        for (File file : listFile) {
            if (file.isFile()) {
                result.add(file.getPath());
            } else {
                getFilesPath(file.getPath(), result);
            }
        }
    }

    public static void main(String[] args) {

        System.out.println(getUrlPath("/test"));
        System.out.println(getUrlPath("test"));
    }
}
